The transmission channel used for data transmission in telecommunication systems frequently causes disturbance for data transmission. Disturbance occurs in all kinds of systems, but in wireless telecommunication systems, in particular, the transmission path attenuates and distorts the signal to be transmitted in many ways. Disturbance on the transmission path is typically caused by multi-path propagation of a signal, different kinds of fading and reflection and also by signals transmitted on the same transmission path.
In order to reduce the effect of the disturbance, various encoding methods have been provided, the purpose of which is to protect the signal against disturbance and to eliminate errors caused by the disturbance in a signal. One efficient encoding method is convolutional encoding. In convolutional encoding the signal to be transmitted, consisting of symbols, is encoded into codewords by convolving the symbols to be transmitted with polynomials of a code. The convolutional code is defined by a coding rate and coding polynomials. The coding rate (k/n) refers to the number of the encoded symbols (n) in relation to the number of the symbols to be encoded (k). The encoder is often implemented by means of shift registers. The constraint length K of the code often refers to the length of the shift register. The encoder may be regarded as a state machine with 2K states.
One encoding method further developed from the convolutional encoding method is a parallel concatenated convolutional code PCCC, which is called a turbo code. One way to form a PCCC code is to use two recursive systematic convolutional encoders and an interleaver. The convolutional encoders may be similar or different. The resulting code comprises a systematic part, which directly corresponds to the symbols at the input of the encoder, and two parity parts, which form the outputs of the parallel convolutional encoders.
The function of the receiver is thus to decode the encoded signal, which has propagated over the transmission path and has often been distorted in many ways. The convolutional code is generally decoded by means of a trellis corresponding to the state machine of the encoder. The trellis expresses the states of the encoder and the transitions between the states with the required codewords.
The purpose of the decoder is thus to determine the sequential states, i.e. the transitions, of the encoder from one state to another. In order to determine the transitions in the decoder, branch metrics are used, which illustrate the probabilities of different transitions. The branch metrics are proportional to the logarithms of the transition probabilities. Hence, the sums of the metrics correspond to the sums of the probabilities. Small metrics correspond to a high probability.
In connection with turbo codes, in particular, iterative decoding methods are applied, which use soft bit decisions. A soft decision comprises a bit decision and a probability that the decision is correct. These methods are usually based on the known Maximum A Posteriori (MAP) algorithm, which functions by means of symbols. The original MAP algorithm, disclosed in connection with turbo codes in publication Berrou, Glavieux, Thitimajshima: Near Shannon limit error-correcting coding; Turbo codes, Proc. IEEE Int. Conf. Commun., Geneva, Switzerland, pp. 1064–1070, 1993, for example, is too complex to be implemented in telecommunication systems in practice. It has been further developed into what is known as a MaxLogMap method, described in the following publications, for example: S. S. Pietrobon S. A. Barbulescu, A Simplification of the Modified Bahl Decoding Algorithm for Systematic Convolutional Codes, ISITA 1994, Sydney, NSW, pp. 1073–1077, November 1994, and S. Benedetto, D. Divsalar, G. Montorsi, F. Pollara, Soft-Output Decoding Algorithms in Iterative Decoding of Turbo Codes, TDA Progress report pp. 42–124, Feb. 15, 1996.
The use of both the MAP and the MaxLogMap involves an extensive memory requirement. In iterative computation, data is taken from the preceding iteration to the next iteration round in the form of an extrinsic weight coefficient. In order to compute the weight coefficient, one must know the values of the path metrics in the trellis, computed both forwards and backwards. In both directions, the current values of the path metrics are computed on the basis of the preceding values, and the computation goes in opposite directions along the received signal. This means that the metrics of one direction of travel should be stored in a memory to await the computation going in the opposite direction. For example, if the number of the original uncoded bits is N=5,000 and an eight-state code is used, the amount of the available memory should be 8*N, i.e. 4,000 units, and assuming that the word width is 16 bits, the memory requirement would be 80 kB, which is a large amount, implemented by means of today's techniques. The exemplary numerical values used herein correspond to parameters of novel telecommunication systems.
The memory requirement can be reduced by using what is known as the sliding window principle. Here, for example, the metrics to be computed forwards are computed as a continuous function, whereas the metrics going backwards are computed inside the window sliding over the received signal to be transmitted. The problem relating to this is that at the end of the window (seen from the direction of forward-going computation) the values of the metrics to be computed backwards are not known. However, this problem is eliminated by the well known feature of path metrics, according to which, irrespective of the values used at the beginning, the numerical values converge into the correct values after path metrics have been computed for a while. “Learning” period computation must therefore be performed at the beginning; in other words, there is a warm-up period, after which the correct values are found. The length of the learning period depends on the constraint length of the code. It is well known that a good result is achieved if the learning period is about five times the constraint length of the code.
Solutions of this kind utilizing the sliding window technique are disclosed in the above-mentioned publication by S. Benedetto et al. and in U.S. Pat. No. 5,933,462, for example. The amount of required memory may thus be reduced. However, there are still other drawbacks in the solutions disclosed. The solutions require a relatively complex control system and multi-port memory elements from which several memory locations can be read simultaneously.